#include <stdio.h>
#include <memory>

class Builder {
public:
    Builder *A(int a)
    {
        printf("A: %d\n", a);
        return this;
    }

    Builder *B(int b)
    {
        printf("B: %d\n", b);
        return this;
    }

    Builder *C(int c)
    {
        printf("C: %d\n", c);
        return this;
    }
};

int main()
{
    auto builder = std::make_unique<Builder>();

    builder
        ->A(1)
        ->B(2)
        ->C(3);
    return 0;
}
